package leetCode;


import org.junit.Test;

/**
 * 字符串转换整数 (atoi)
 *
 * @author 司松坡
 * @createTime 2023年09月26日
 */
public class LeetCode8 {

        public int myAtoi(String s) {
            if (s.length() == 0) {
                return 0;
            }
            int i = 0;
            char[] charArray = s.toCharArray();
            while (true) {
                if (i < charArray.length && charArray[i] == ' ') {
                    i += 1;
                } else {
                    break;
                }
            }
            //标识位
            Boolean bool = null;
            //判断符号位
            if (i < charArray.length && charArray[i] == '-') {
                bool = false;
                i++;
            } else if (i < charArray.length && charArray[i] >= '0' && charArray[i] <= '9') {
                bool = true;
            } else if (i == charArray.length) {
                return 0;
            } else {
                if (charArray[i] == '+') {
                    bool = true;
                    i++;
                } else {
                    return 0;
                }
            }
            long num = 0L;
            while (true) {
                if (i < charArray.length && charArray[i] >= '0' && charArray[i] <= '9') {
                    num = num * 10 + (charArray[i] - '0');
                    i++;
                    if (bool) {
                        if (num > Integer.MAX_VALUE) {
                            return Integer.MAX_VALUE;
                        }
                    } else {
                        if (-num < Integer.MIN_VALUE) {
                            return Integer.MIN_VALUE;
                        }
                    }
                } else {
                    break;
                }
            }
            if (!bool) {
                num = -num;
            }
            return (int) num;
        }


    @Test
    public void test(){
        System.out.println(myAtoi("  -42"));
    }


}
